package sol.cc;

import utils.ArrayUtils;

/**
 * 有一副由NxN矩阵表示的图像，这里每个像素用一个int表示，请编写一个算法，在不占用额外内存空间的情况下(即不使用缓存矩阵)，将图像顺时针旋转90度。
 * 给定一个NxN的矩阵，和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500，图像元素小于等于256。
 */
public class Issue1_6 {
    public static int[][] transformImage(int[][] mat, int n) {
        ArrayUtils.println(mat);

        //上下翻转
        for (int col = 0; col < n; ++col) {
            for (int row = 0; row < n / 2; ++row) {
                int tmp=mat[row][col];
                mat[row][col]=mat[n-row-1][col];
                mat[n-row-1][col] = tmp;
            }
        }
        ArrayUtils.println(mat);


        //沿对角线翻转
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < i; ++j) {
                int tmp = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = tmp;
            }
        }
        ArrayUtils.println(mat);

        return mat;
    }

    public static void main(String[] args) {
        int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        transformImage(arr, arr.length);
    }
}
